home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir43 / med300.zip / MEBLOCK.CLA < prev    next >
Text File  |  1994-02-22  |  5KB  |  135 lines

  1.  
  2. !▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3. !█                                     █
  4. !█ MEBLOCK.CLA                                                           █
  5. !█ Block operations                             █
  6. !█                                     █
  7. !█ Revision Number: 1                             █
  8. !█ Revision Date  : 22-Feb-94                                            █
  9. !█                                     █
  10. !█ Revision History                             █
  11. !█   1 Created                                 █
  12. !█                                     █
  13. !▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  14.  
  15.              MEMBER('MEMOEDIT')
  16.  
  17.  
  18. !═════════════════════════════════════════════════════════════════════════
  19. !               Normalize block begin/end
  20. !═════════════════════════════════════════════════════════════════════════
  21. ME_NormBlock PROCEDURE
  22.  
  23. isTemp         SHORT                 ! Temp for swap
  24.  
  25.   CODE
  26.   IF MED:isBlockBegin > MED:isBlockEnd           ! If begin > end
  27.     isTemp           = MED:isBlockBegin          !   Swap begin and end
  28.     MED:isBlockBegin = MED:isBlockEnd            !
  29.     MED:isBlockEnd   = isTemp                    !
  30.   .                         ! Endif
  31.   RETURN                     !
  32.  
  33.  
  34. !═════════════════════════════════════════════════════════════════════════
  35. !              Begin block marking
  36. !═════════════════════════════════════════════════════════════════════════
  37. ME_MarkOn    PROCEDURE
  38.  
  39.   CODE
  40.   IF NOT MED:bbBlockMark                         ! If not in marking mode
  41.     MED:isBlockBegin = MED:usPosition            !   Set block start
  42.     MED:isBlockEnd   = MED:usPosition            !   Set block end
  43.     MED:bbBlockMark  = 1                         !   Turn marking mode on
  44.     MED:bbBlockShow  = 1                         !   Display marked block
  45.   .                         ! Endif
  46.   RETURN                     !
  47.  
  48.  
  49. !═════════════════════════════════════════════════════════════════════════
  50. !               End block marking
  51. !═════════════════════════════════════════════════════════════════════════
  52. ME_MarkOff   PROCEDURE
  53.  
  54.   CODE
  55.   IF MED:bbBlockMark                             ! If in marking mode
  56.     MED:bbBlockMark = 0                          !   Turn marking mode off
  57.   .                         ! Endif
  58.   RETURN                     !
  59.  
  60.  
  61. !═════════════════════════════════════════════════════════════════════════
  62. !            Copy marked block to clipboard
  63. !═════════════════════════════════════════════════════════════════════════
  64. ME_Copy2Clip PROCEDURE
  65.  
  66.          ! Locals:
  67. usLine         USHORT                 ! Line index
  68. usStart         USHORT                 ! Range start
  69. usEnd         USHORT                 ! Range end
  70.  
  71.   CODE
  72.   IF MED:bbBlockShow                             ! If block marked
  73.     FREE(qClipboard)                 !   Free clipboard
  74.     ME_NormBlock()                               !   Normalize block
  75.     usLine  = ME_LineIndex(MED:isBlockBegin)     !
  76.     usStart = MED:isBlockBegin                   !
  77.     usEnd   = ME_LineEnd(usLine)                 !
  78.     LOOP WHILE usEnd < MED:isBlockEnd            !   Loop until done
  79.       ME_GetBlock(qClipBoard, usStart, (usEnd-usStart)+1)
  80.       ADD(qClipBoard)                 !     Add line to clipbaord
  81.       usLine += 1                 !
  82.       usStart = ME_LineStart(usLine)             !
  83.       usEnd   = ME_LineEnd(usLine)               !
  84.     .                         !   End loop
  85.     ME_GetBlock(qClipBoard, usStart, (MED:isBlockEnd-usStart)+1)
  86.     ADD(qClipBoard)                 !   Take care of last line
  87.   .                         ! Endif
  88.   ME_MarkOff()                                   ! Turn off block marking
  89.   MED:bbBlockShow = 0                            !
  90.   ME_SetPage()                                   !
  91.   RETURN
  92.  
  93.  
  94. !═════════════════════════════════════════════════════════════════════════
  95. !             Cut marked block to clipboard
  96. !═════════════════════════════════════════════════════════════════════════
  97. ME_Cut2Clip  PROCEDURE
  98.  
  99.   CODE
  100.   IF NOT MED:bbBlockShow THEN RETURN.            ! Quit if no block marked
  101.   ME_NormBlock()                                 ! Normalize block
  102.   ME_Copy2Clip()                                 ! Copy block to clipboard
  103.   ME_DelTxt(MED:isBlockBegin, (MED:isBlockEnd-MED:isBlockBegin)+1)
  104.   ME_MarkOff()                                   ! Reset block
  105.   MED:bbHasChanged = 1                           ! Set modified flag
  106.   ME_ReformDoc()                                 !
  107.   MED:usPosition = MED:isBlockBegin              ! Adjust current position
  108.   RETURN
  109.  
  110.  
  111. !═════════════════════════════════════════════════════════════════════════
  112. !         Paste clipboard contents at current location
  113. !═════════════════════════════════════════════════════════════════════════
  114. ME_PasteClip PROCEDURE
  115.  
  116.          ! Locals:
  117. usIndex         USHORT                 ! Clipboard index
  118. usPos         USHORT                 ! Insertion position
  119. usLen         USHORT                 ! Insertion length
  120.  
  121.   CODE
  122.   usPos = MED:usPosition                         ! Set to current position
  123.   LOOP usIndex = 1 TO RECORDS(qClipBoard)     ! Loop for lines in clipbaord
  124.     GET(qClipBoard, usIndex)             !
  125.     usLen = LEN(CLIP(qClipboard))         !
  126.     ME_InsTxt(usPos, usLen, qClipBoard)          !
  127.     usPos += usLen                 !   Paste text
  128.     IF SUB(qClipBoard, usLen, 1) <> CHR(eHRT)     !
  129.       ME_InsTxt(usPos, 1, ' ')                   !   Add space if needed
  130.       usPos += 1                 !
  131.   . .                         ! End loop
  132.   ME_ReformDoc()                                 ! Reformat document
  133.   RETURN                     !
  134.  
  135.